package com.haike.pushjobs.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 
 * </p>
 *
 * @author Your Name
 * @since 2025-07-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("T_PUSH_RECORD")
public class TPushRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID，唯一标识一条推送记录，自增
     */
    @TableId(value = "ID", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 关联的推送任务ID，关联DATA_PUSH_TASK表的ID
     */
    @TableField("TASK_ID")
    private Long taskId;

    /**
     * 目标数据表名
     */
    @TableField("TARGET_TABLE")
    private String targetTable;

    /**
     * 源系统数据的主键ID，用于关联源业务表数据
     */
    @TableField("SOURCE_DATA_ID")
    private String sourceDataId;

    /**
     * 本条数据的实际推送时间
     */
    @TableField("PUSH_TIME")
    private Date pushTime;

    /**
     * 推送结果：1-成功，0-失败
     */
    @TableField("PUSH_RESULT")
    private Integer pushResult;

    /**
     * 推送失败时的错误信息，成功时可为空
     */
    @TableField("ERROR_MSG")
    private String errorMsg;

    /**
     * 推送成功后，目标系统返回的对应数据ID，失败时可为空
     */
    @TableField("TARGET_DATA_ID")
    private String targetDataId;

    /**
     * 推送时发送给目标系统的请求报文原文（JSON/XML等）
     */
    @TableField("REQUEST_BODY")
    private String requestBody;

    /**
     * 目标系统返回的响应报文原文，无响应时可为空
     */
    @TableField("RESPONSE_BODY")
    private String responseBody;

    /**
     * 请求+响应报文的总大小（字节），用于评估数据量
     */
    @TableField("MESSAGE_SIZE")
    private Integer messageSize;

    /**
     * 创建人账号，记录任务创建者
     */
    @TableField("CREATE_BY")
    private String createBy;

    /**
     * 任务创建时间，默认取系统当前时间
     */
    @TableField("CREATE_TIME")
    private Date createTime;

    /**
     * 更新账号，记录任务创建者
     */
    @TableField("UPDATE_BY")
    private String updateBy;

    /**
     * 任务最后修改时间，未修改时为空
     */
    @TableField("UPDATE_TIME")
    private Date updateTime;


}
